<?php
class User_Seance {
	
	/**
	 * Метод проводит авторизацию пользователя
	 * @param User_User $objUser - объект пользователя
	 */
	public static function authorizationIn(User_User $objUser) {
		$hash = self::makeHash($objUser);
	//	$ip = $_SERVER['REMOTE_ADDR'];
	//	$objUser->updateFields(array('hash' => $hash));
	
		setcookie('id', $objUser->id, time() + 9999999, '/');
		setcookie('hash', $hash, time() + 9999999, '/');
		$_SESSION['hash'] = $hash;
	}
	
	/**
	 * Метод осуществляет выход пользователя
	 */
	public static function authorizationOut() {
		setcookie('id', '', time() - 3600);
		setcookie('hash', '', time() - 3600);
		unset($_SESSION['hash']);
	}
	
	/**
	 * Метод получает id текущего пользователя
	 */
	public static function getId() {
		if(self::isLogged()) return $_COOKIE['id'];
		else return null;
	}
	
	/**
	 * Функция делает проверку, залогинен ли пользователь
	 */
	public static function isLogged() {
		if (!isset($_COOKIE['id']) || !isset($_COOKIE['hash'])) return false;
		$hash = $_COOKIE['hash'];
		//$ip = $_SERVER['REMOTE_ADDR'];
		$id = $_COOKIE['id'];
		if (isset($_SESSION['hash'])) {
			if ($_SESSION['hash'] == $hash) return true;
			else return false;
		}
		else {
			$objUser = new User_User();
			$objUser->find('first', array('select' => '`user`.`ID_user`,`user`.`is_vk_user`,`user`.`vk_id`', 'conditions' => "`user`.`ID_user` = '" . $id . "'"));
			if ($objUser->id) {
				$_SESSION['hash'] = self::makeHash($objUser);
				return true;
			}
			else return false;
		}
	}
	
	/**
	 * Метод возращает объект текущего польтзователя
	 * @return User_User - объект пользователя
	 */
	public static function getUser() {
		$userID = self::getId();
		return new User_User($userID);
	}
	
	public static function makeHash($objUser) {
		if($objUser->getField('is_vk_user')) $hash = md5($objUser->id . $objUser->getField('vk_id') . 'outsider');
		else $hash = md5($objUser->id . $objUser->getField('e_mail') . 'outsider');
		return $hash;
	}
	
	/**
	 * Метод переправляет пользователя на другую страницу.
	 *
	 * @param string $location
	 */
	public static function moveTo($location) {
		header('HTTP/1.1 301 Moved Permanently');
		header('Location: ' . $location);
		exit();
	}
}
?>